import wx
import random


class MyFrame(wx.Frame):
    # 抽奖列表
    NameList = ['mia', 'tom', 'jack']

    # 构造方法
    def __init__(self):
        wx.Frame.__init__(self, None, title='抽奖器', pos=(100, 100), size=(400, 600))
        # 创建面板
        self.pl = wx.Panel(self, pos=(0, 0), size=(400, 600))
        # 设置背景颜色
        self.SetBackgroundColour((200, 0, 100))
        self.pl.SetBackgroundColour((180, 45, 0))

        # 修正：调整静态文本尺寸，不要覆盖按钮区域
        self.staticText = wx.StaticText(
            self.pl,
            label=random.choice(self.NameList),
            pos=(0, 100),  # Y位置调整到100
            size=(400, 150),  # 高度减少到150，给按钮留空间
            style=wx.ALIGN_CENTER  # 使用 ALIGN_CENTER 而不是 wx.TE_CENTRE
        )

        # 创建字体
        font = wx.Font(48, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
        self.staticText.SetFont(font)
        self.staticText.SetForegroundColour(wx.WHITE)  # 添加文字颜色，更清晰

        # 创建按钮 - 调整位置到静态文本下方
        self.btn1 = wx.Button(self.pl, label='开始抽奖', pos=(100, 300), size=(80, 40))
        self.btn2 = wx.Button(self.pl, label='结束抽奖', pos=(200, 300), size=(80, 40))

        self.btn1.SetBackgroundColour((0, 0, 128))
        self.btn1.SetForegroundColour(wx.WHITE)  # 按钮文字设为白色
        self.btn2.SetBackgroundColour((128, 0, 0))
        self.btn2.SetForegroundColour(wx.WHITE)

        # 绑定事件
        self.Bind(wx.EVT_BUTTON, self.onClick, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.stop, self.btn2)

    def onClick(self, event):  # 抽奖
        if hasattr(self, 'timer') and self.timer.IsRunning():
            return  # 防止重复启动

        self.timer = wx.Timer(self)  # 创建了一个定时器
        self.Bind(wx.EVT_TIMER, self.update_name, self.timer)
        self.timer.Start(100)  # 每隔100毫秒更新名字

    def update_name(self, event):
        self.staticText.SetLabelText(random.choice(self.NameList))

    def stop(self, event):
        if hasattr(self, 'timer'):
            self.timer.Stop()  # 停止计时


if __name__ == "__main__":  # python程序主入口
    # 创建应用程序对象
    app = wx.App()
    # 创建窗口
    frm = MyFrame()
    # 显示窗口
    frm.Show()
    # 让窗口一直显示
    app.MainLoop()